import { defineStore } from 'pinia'
import { ref, computed } from 'vue'

export const useArticleStore = defineStore(
  'big-article',
  () => {
    // -------------------------- 1. 基础数据定义（分类列表 + 文章列表） --------------------------
    const channelList = ref([
      { id: 44133, cate_name: '新闻', cate_alias: 'news' },
      { id: 44157, cate_name: '热点', cate_alias: 'hot' },
      { id: 44160, cate_name: '程序员', cate_alias: 'worker' },
      { id: 44171, cate_name: '美女', cate_alias: 'girl' },
      { id: 44173, cate_name: '帅哥', cate_alias: 'boy' },
      { id: 44174, cate_name: '社会', cate_alias: 'social' },
      { id: 45007, cate_name: '体育', cate_alias: 'sports' },
    ])

    // -------------------------- 2. 分类操作方法（关键：定义在 return 之前！） --------------------------
    // 编辑分类
    const setChannelList = ({ id, cate_name, cate_alias }) => {
      const isIdExist = channelList.value.some((item) => item.id === id)
      if (!isIdExist) {
        console.warn(`编辑失败：未找到 id 为 ${id} 的频道！`)
        return
      }
      const updatedList = channelList.value.map((item) =>
        item.id === id ? { ...item, id, cate_name, cate_alias } : item,
      )
      channelList.value = updatedList
      console.log(`编辑成功：id 为 ${id} 的频道已更新！`)
    }

    // 添加分类（确保该方法存在，未被注释/删除）
    const addChannelList = (obj) => {
      // 校验：新增分类需包含 id、cate_name、cate_alias（避免数据格式错误）
      if (!obj.id || !obj.cate_name || !obj.cate_alias) {
        console.warn('添加失败：分类需包含 id、cate_name、cate_alias 字段！')
        return
      }
      // 避免重复添加相同 id 的分类
      const isDuplicate = channelList.value.some((item) => item.id === obj.id)
      if (isDuplicate) {
        console.warn(`添加失败：id 为 ${obj.id} 的分类已存在！`)
        return
      }
      channelList.value = [obj, ...channelList.value]
      console.log('添加成功：新分类已加入！')
    }

    // 删除分类
    const removeChannelList = (id) => {
      const isIdExist = channelList.value.some((item) => item.id === id)
      if (!isIdExist) {
        console.warn(`删除失败：未找到 id 为 ${id} 的频道！`)
        return
      }
      channelList.value = channelList.value.filter((item) => item.id !== id)
      console.log(`删除成功：id 为 ${id} 的频道已移除！`)
    }

    // -------------------------- 3. 文章列表数据 --------------------------
    const articleList = ref([
      // 1. 新闻分类（cate_id: 44133，cate_name: 新闻）
      {
        id: 44133001, // 唯一标识：分类ID+001
        title: '2024年全国科技工作会议召开，聚焦人工智能与量子计算发展',
        cate_id: 44133,
        cate_name: '新闻',
        cover_img: 'https://picsum.photos/id/22/600/400',
        content:
          '会议明确未来五年科技发展重点，将投入超500亿元支持AI基础研究，量子计算原型机研发再提速。此次会议由科技部牵头，联合多部委及高校、企业代表共同参与，旨在制定AI与量子计算领域的技术路线图，推动关键核心技术突破，助力我国在全球科技竞争中占据优势地位。',
        state: '已发布',
        pub_date: '2024-01-15 10:00:00',
      },
      {
        id: 44133002, // 唯一标识：分类ID+002
        title: '全国两会闭幕，民生领域多项新政落地：教育减负、医疗报销比例提高',
        cate_id: 44133,
        cate_name: '新闻',
        cover_img: 'https://picsum.photos/id/23/600/400',
        content:
          '今年两会期间，代表委员提出的120余项民生提案中，教育"双减"深化、医保跨省直接结算扩围等政策已正式实施。教育方面，将进一步规范校外培训机构收费标准，要求义务教育阶段学校课后服务全覆盖，解决家长"接送难"问题；医疗领域，职工医保门诊报销比例从原来的40%提高至50%以上，跨省直接结算覆盖所有统筹地区，方便群众异地就医。',
        state: '已发布',
        pub_date: '2024-03-11 16:30:00',
      },
      {
        id: 44133003, // 唯一标识：分类ID+003
        title: '全球首条高温超导高速磁浮试验线贯通，时速可达600公里',
        cate_id: 44133,
        cate_name: '新闻',
        cover_img: 'https://picsum.photos/id/24/600/400',
        content:
          '该试验线位于四川成都，采用我国自主研发的高温超导材料，全长1.9公里，设计时速600公里，未来有望填补航空与高铁间的速度空白。试验线在建设过程中攻克了超导磁体、轨道精密制造等多项技术难题，目前已完成首次空载试验，各项性能指标均达到设计要求，下一步将开展载人测试，为后续商业化运营奠定基础。',
        state: '已发布',
        pub_date: '2024-04-20 09:15:00',
      },
      {
        id: 44133004, // 唯一标识：分类ID+004
        title: '民政部公布2024年第一批地名文化遗产保护名单，15个千年古县入选',
        cate_id: 44133,
        cate_name: '新闻',
        cover_img: 'https://picsum.photos/id/25/600/400',
        content:
          '此次入选的古县涵盖河南、陕西、山西等省份，均拥有超过1000年建置史，包括河南洛阳偃师区、陕西西安长安区、山西运城永济市等。民政部要求各地建立地名文化遗产档案，严禁随意更改传统地名，同时通过数字技术打造"线上地名博物馆"，利用3D建模、VR等技术还原古地名背后的历史场景，传承和弘扬中华优秀传统文化。',
        state: '已发布',
        pub_date: '2024-05-25 14:45:00',
      },

      // 2. 热点分类（cate_id: 44157，cate_name: 热点）
      {
        id: 44157001, // 唯一标识：分类ID+001
        title: '新茶饮品牌推出"春日樱花限定系列"，单店日销突破3000杯',
        cate_id: 44157,
        cate_name: '热点',
        cover_img: 'https://picsum.photos/id/26/600/400',
        content:
          '多家茶饮品牌同步上线樱花主题饮品，采用云南现摘樱花酱，搭配芝士奶盖成为年轻人打卡热门。其中，某头部茶饮品牌的"樱花生椰拿铁"单店日销突破3000杯，原料选用海拔1200米以上的云南早樱，通过低温萃取工艺保留樱花的天然香气。同时，品牌还推出樱花主题杯套、帆布袋等周边产品，进一步激发消费者的购买欲望，带动春日饮品消费热潮。',
        state: '已发布',
        pub_date: '2024-03-02 11:20:00',
      },
      {
        id: 44157002, // 唯一标识：分类ID+002
        title: '"Citywalk"持续火热，全国10大城市推出"步行旅游地图"',
        cate_id: 44157,
        cate_name: '热点',
        cover_img: 'https://picsum.photos/id/27/600/400',
        content:
          '北京、上海、成都等城市联合文旅部门推出特色步行路线，涵盖老街区、非遗工坊等小众打卡点。北京的"胡同文化线"串联南锣鼓巷、烟袋斜街等10余个文化地标，游客可在步行过程中感受老北京的胡同风情；成都的"烟火市井线"包含宽窄巷子、锦里等景点，还加入了茶馆体验、蜀绣制作等互动环节，让游客深入体验当地民俗文化，"Citywalk"已成为年轻人青睐的新型旅游方式。',
        state: '已发布',
        pub_date: '2024-04-08 10:50:00',
      },
      {
        id: 44157003, // 唯一标识：分类ID+003
        title: '国产动漫《长安三万里2》定档暑期，首部票房破18亿创纪录',
        cate_id: 44157,
        cate_name: '热点',
        cover_img: 'https://picsum.photos/id/28/600/400',
        content:
          '续作《长安三万里2》将聚焦李白晚年生活，制作团队透露将加入更多唐代音乐元素，预计7月15日全国上映。首部《长安三万里》上映后票房突破18亿元，创下国产历史题材动漫票房纪录，影片中"将进酒"的水墨动画片段成为经典，深受观众好评。续作在保留首部艺术风格的基础上，将进一步优化人物建模与动作流畅度，还邀请了专业的唐代文化顾问参与创作，确保历史细节的准确性。',
        state: '已发布',
        pub_date: '2024-06-05 15:20:00',
      },
      {
        id: 44157004, // 唯一标识：分类ID+004
        title: '年轻人"反向消费"成趋势：二手平台订单量同比增长120%',
        cate_id: 44157,
        cate_name: '热点',
        cover_img: 'https://picsum.photos/id/29/600/400',
        content:
          '数据显示，95后用户占二手平台新增用户的68%，电子产品、奢侈品二手交易最活跃，主打"性价比消费"。某二手交易平台报告显示，2024年一季度订单量同比增长120%，其中二手手机交易量突破500万台，二手奢侈品客单价下降30%。年轻人的消费观念逐渐转变，不再盲目追求新品，更注重商品的性价比和实用性，"反向消费"趋势的兴起也推动了二手交易市场的快速发展。',
        state: '已发布',
        pub_date: '2024-04-01 13:10:00',
      },

      // 3. 程序员分类（cate_id: 44160，cate_name: 程序员）
      {
        id: 44160001, // 唯一标识：分类ID+001
        title: '2024年最值得学习的5个编程语言：Rust上榜，Python仍居榜首',
        cate_id: 44160,
        cate_name: '程序员',
        cover_img: 'https://picsum.photos/id/30/600/400',
        content:
          '开发者调研机构报告显示，Python因AI生态优势持续领先，Rust因内存安全特性在系统开发领域需求激增。榜单前5名依次为Python、JavaScript、Rust、Go、Java。Python凭借丰富的AI库和框架，在人工智能、数据分析领域应用广泛；Rust具有内存安全、无垃圾回收等特点，在系统开发、区块链领域需求快速增长；JavaScript仍是前端开发的核心语言，同时在全栈开发中也有广泛应用，开发者可根据自身职业方向选择合适的编程语言学习。',
        state: '已发布',
        pub_date: '2024-01-05 17:30:00',
      },
      {
        id: 44160002, // 唯一标识：分类ID+002
        title: '前端框架"React 19"正式发布，新增服务器组件默认支持',
        cate_id: 44160,
        cate_name: '程序员',
        cover_img: 'https://picsum.photos/id/31/600/400',
        content:
          'React 19优化了渲染性能，减少50%的客户端重渲染，同时简化了状态管理API，官方提供迁移工具。核心更新包括：默认支持服务器组件（Server Components），无需额外配置，可有效减少客户端JavaScript体积，提升页面加载速度；新增useActionState钩子，简化表单提交逻辑，降低状态管理复杂度；优化Suspense组件，支持流式渲染，提升用户体验。官方表示，React 19与React 18保持兼容，开发者可轻松完成迁移。',
        state: '已发布',
        pub_date: '2024-02-18 09:40:00',
      },
      {
        id: 44160003, // 唯一标识：分类ID+003
        title: '后端工程师必备：分布式缓存Redis 7.2新特性解读，集群性能提升40%',
        cate_id: 44160,
        cate_name: '程序员',
        cover_img: 'https://picsum.photos/id/32/600/400',
        content:
          'Redis 7.2新增多线程IO模型、动态内存管理功能，解决大key删除阻塞问题，适合高并发场景。具体更新内容：多线程IO默认开启，读写性能提升40%，可更好地应对高并发请求；新增DYNAMIC_MEMORY_CONFIG命令，支持动态调整内存策略，无需重启Redis服务；优化RDB持久化速度，减少磁盘IO开销，提升数据持久化效率；加强安全性，支持密码复杂度校验与IP白名单功能，保障Redis服务安全。这些新特性使Redis在高并发、大数据场景下的表现更加出色。',
        state: '已发布',
        pub_date: '2024-03-10 14:25:00',
      },
      {
        id: 44160004, // 唯一标识：分类ID+004
        title: 'AI开发工具"Copilot X"支持多语言代码生成，调试效率提升60%',
        cate_id: 44160,
        cate_name: '程序员',
        cover_img: 'https://picsum.photos/id/33/600/400',
        content:
          'Copilot X新增代码注释自动生成、单元测试编写功能，支持Java、Go、TypeScript等12种语言，免费版开放使用。核心功能包括：实时调试建议，可自动定位代码中的bug并提供修复方案，帮助开发者快速解决问题；自然语言转代码，支持中文描述生成代码，降低开发门槛；跨文件代码关联，自动识别不同文件间的依赖关系，生成连贯的代码逻辑。实测数据显示，使用Copilot X可减少60%的调试时间，显著提升开发效率，受到广大开发者的青睐。',
        state: '已发布',
        pub_date: '2024-05-10 11:50:00',
      },

      // 4. 美女分类（cate_id: 44171，cate_name: 美女）
      {
        id: 44171001, // 唯一标识：分类ID+001
        title: '春日妆容教程："淡颜樱花妆"火了，3步打造自然通透感',
        cate_id: 44171,
        cate_name: '美女',
        cover_img: 'https://picsum.photos/id/34/600/400',
        content:
          '美妆博主分享：用浅粉色眼影打底，搭配淡粉色唇釉，重点突出睫毛纤长感，适合日常通勤和约会。具体步骤如下：第一步，底妆打造，选用轻薄型粉底液均匀涂抹面部，局部用遮瑕产品遮盖瑕疵，最后用散粉轻扫T区定妆，保持底妆清透；第二步，眼妆部分，浅粉色眼影铺满整个眼皮，深粉色眼影在眼尾处加深，打造层次感，睫毛膏刷2层，使睫毛根根分明；第三步，唇妆选择淡粉色唇釉薄涂，唇峰处用亮片唇蜜提亮，增加唇部立体感，轻松打造自然通透的春日樱花妆。',
        state: '已发布',
        pub_date: '2024-02-25 15:10:00',
      },
      {
        id: 44171002, // 唯一标识：分类ID+002
        title: '小个子女生春季穿搭：高腰阔腿裤+短款上衣，显高5cm秘诀',
        cate_id: 44171,
        cate_name: '美女',
        cover_img: 'https://picsum.photos/id/35/600/400',
        content:
          '搭配博主推荐：选择垂感面料阔腿裤，上衣塞进裤腰，搭配同色系帆布鞋，视觉拉长身材比例。穿搭技巧详解：裤子选择高腰设计，腰线在肚脐以上2cm左右，九分长度刚好露出脚踝，面料优先选择亚麻或垂感西装料，避免臃肿；上衣挑选短款卫衣或短款衬衫，长度控制在腰线以上，将上衣塞进裤腰，突出高腰线；配饰方面，选择细款腰带强调腰线，鞋子搭配同色系帆布鞋或小白鞋，增加整体搭配的协调感，帮助小个子女生视觉显高5cm。',
        state: '已发布',
        pub_date: '2024-03-15 10:30:00',
      },
      {
        id: 44171003, // 唯一标识：分类ID+003
        title: '素颜好气色养成：3个护肤步骤改善暗沉，不用化妆也显白',
        cate_id: 44171,
        cate_name: '美女',
        cover_img: 'https://picsum.photos/id/36/600/400',
        content:
          '皮肤科医生建议：每天坚持温和清洁+保湿精华+防晒，每周2次补水面膜，28天改善肤色不均。具体护肤方案：晨间护肤，用温水清洁面部后，涂抹保湿精华补充肌肤水分，再使用乳液锁水，最后涂抹SPF30+ PA+++的防晒产品，保护肌肤免受紫外线伤害；晚间护肤，使用氨基酸洁面乳彻底清洁面部，避免皂基洁面产品刺激皮肤，之后涂抹保湿精华和面霜，为肌肤深层补水保湿；每周进行2次补水面膜护理，为肌肤密集补水，坚持28天可明显改善肤色暗沉问题，提升皮肤通透感，素颜也能拥有好气色。',
        state: '已发布',
        pub_date: '2024-04-05 09:20:00',
      },
      {
        id: 44171004, // 唯一标识：分类ID+004
        title: '长发造型教程："慵懒低马尾"简单易上手，适合上班族和学生党',
        cate_id: 44171,
        cate_name: '美女',
        cover_img: 'https://picsum.photos/id/37/600/400',
        content: '发型师技巧：用卷发棒轻微烫卷发尾',
        state: '已发布',
        pub_date: '2024-04-05 09:20:00',
      },
      // 5. 帅哥分类（cate_id: 44173，cate_name: 帅哥）
      {
        id: 44173001, // 唯一标识：分类ID+001
        title: '男士春季简约穿搭：白衬衫+卡其裤，经典永不过时',
        cate_id: 44173,
        cate_name: '帅哥',
        cover_img: 'https://picsum.photos/id/38/600/400',
        content:
          '穿搭博主推荐：选择合身版型白衬衫，搭配九分卡其裤，脚踩小白鞋，适合通勤、约会多种场景。搭配细节参考：衬衫选择修身但不紧身的版型，避免过于宽松显得邋遢，面料选用棉混纺材质，具有良好的抗皱性，方便日常打理，袖口可卷至小臂1/2处，增加造型层次感；裤子挑选卡其色九分裤，长度刚好露出脚踝，裤腰选择可调节款式，确保穿着舒适，避免过松或过紧；鞋子搭配白色板鞋或小白鞋，袜子选择浅色系短袜，避免露出袜子，保持整体搭配的简约干净，经典的白衬衫+卡其裤组合永不过时。',
        state: '已发布',
        pub_date: '2024-03-12 10:15:00', // 春季穿搭类内容3月发布，贴合换季穿衣需求
      },
      {
        id: 44173002, // 唯一标识：分类ID+002
        title: '短发男生发型推荐："渐变碎盖头"显脸小，打理简单',
        cate_id: 44173,
        cate_name: '帅哥',
        cover_img: 'https://picsum.photos/id/39/600/400',
        content:
          '理发师建议：两侧推短至3mm，顶部留5cm长度打碎，日常用发泥抓出蓬松感，适合圆脸、方脸。发型特点分析：两侧采用渐变推短设计，从耳后到头顶逐渐变长，长度从3mm过渡到5cm，能够修饰脸型轮廓，使脸部看起来更小；顶部头发留5cm左右，用剪刀打碎发尾，避免头发过于厚重，增加发型的轻盈感；日常打理简单，每天早上取少量发泥，从发根抓至发尾，制造蓬松感，无需喷发胶，造型自然持久，适合圆脸、方脸等多种脸型，深受男生喜爱。',
        state: '已发布',
        pub_date: '2024-04-03 15:30:00', // 春季温度回升，4月推荐短发更贴合清爽需求
      },
      {
        id: 44173003, // 唯一标识：分类ID+003
        title: '男士护肤基础：3步搞定清洁+保湿+防晒，告别油光满面',
        cate_id: 44173,
        cate_name: '帅哥',
        cover_img: 'https://picsum.photos/id/40/600/400',
        content:
          '美妆博主分享：用氨基酸洁面乳清洁，搭配清爽型保湿乳，日间加涂SPF30防晒，控油同时保护皮肤。男士基础护肤流程：晨间护肤，先用温水湿润面部，取适量氨基酸洁面乳揉搓起泡后清洁面部，彻底清除夜间肌肤分泌的油脂，之后涂抹清爽型保湿乳补充肌肤水分，最后涂抹SPF30+的防晒产品，防止紫外线对皮肤造成伤害；晚间护肤，同样使用氨基酸洁面乳清洁面部，若白天化妆或涂抹防晒，需先进行卸妆，之后涂抹保湿乳即可；每周进行2次去角质护理，选用含有水杨酸成分的去角质产品，避免过度清洁损伤皮肤屏障，坚持护肤可告别油光满面，保持皮肤清爽。',
        state: '已发布',
        pub_date: '2024-04-22 09:45:00', // 春季紫外线增强，4月底强调防晒+控油更贴合需求
      },

      // 6. 社会分类（cate_id: 44174，cate_name: 社会）
      {
        id: 44174001, // 唯一标识：分类ID+001
        title: '社区志愿者招募热潮："银发志愿者"占比提升，平均年龄62岁',
        cate_id: 44174,
        cate_name: '社会',
        cover_img: 'https://picsum.photos/id/42/600/400',
        content:
          '近年来社区志愿服务需求持续增长，全国多地掀起志愿者招募热潮，其中"银发志愿者"占比显著提升，平均年龄达62岁，成为社区服务的重要力量。据全国社区志愿服务平台数据显示，2023年退休老人参与社区志愿服务的时长累计超1.2亿小时，服务内容涵盖社区巡逻、邻里互助、老年食堂帮扶等多个领域。以北京朝阳区某社区为例，现有志愿者320人，60岁以上银发志愿者占比达58%，他们每天协助社区开展垃圾分类引导、独居老人探访等工作，部分有专业背景的退休人员还开设了"银发课堂"，为社区居民提供免费的健康讲座、智能手机使用教学等服务。社区负责人表示，银发志愿者不仅缓解了社区服务人手不足的问题，还通过自身经验传递正能量，促进了社区邻里关系和谐，未来将进一步完善志愿者激励机制，为银发志愿者提供意外险、服务时长兑换等福利，吸引更多老年人参与社区建设。',
        state: '已发布',
        pub_date: '2024-02-20 14:20:00', // 社区服务类内容2月发布，贴合年后社区工作启动节奏
      },
      {
        id: 44174002, // 唯一标识：分类ID+002
        title: '城市共享单车"按需调度"新模式，减少50%乱停放问题',
        cate_id: 44174,
        cate_name: '社会',
        cover_img: 'https://picsum.photos/id/43/600/400',
        content:
          '针对共享单车乱停放影响城市交通秩序的问题，多家共享单车企业引入AI"按需调度"新模式，通过大数据分析用户出行规律，提前调配车辆资源，有效减少50%的乱停放问题。该模式的核心在于利用共享单车内置的GPS定位与用户出行数据，AI系统可实时预测早晚高峰、通勤路段、商圈等人流密集区域的车辆需求，在需求高峰前30分钟，调度团队会将周边闲置车辆运输至需求点，避免"用车难"；同时对违停车辆进行智能识别，通过APP向违停车主发送提醒，引导其规范停放，对多次违规用户采取限制用车的措施。以上海为例，自2024年2月推行该模式以来，中心城区共享单车乱停放投诉量环比下降52%，地铁口、公交站等重点区域的车辆摆放整齐度提升至90%以上。交通部门表示，下一步将联合企业建立共享单车调度数据共享机制，结合城市交通规划优化停车点位，推动共享单车与公共交通的高效衔接，共同维护城市交通秩序。',
        state: '已发布',
        pub_date: '2024-03-25 11:00:00', // 新模式推行1个月后发布效果反馈，3月数据更具参考性
      },
      {
        id: 44174003, // 唯一标识：分类ID+003
        title: '"社区食堂"覆盖率达60%，老年人助餐服务解决"吃饭难"',
        cate_id: 44174,
        cate_name: '社会',
        cover_img: 'https://picsum.photos/id/44/600/400',
        content:
          '为解决老年人"吃饭难"问题，民政部推动全国社区食堂建设，截至2024年3月，社区食堂覆盖率已达60%，其中一线城市覆盖率超85%，为老年人提供低价、营养的助餐服务。社区食堂以"公益属性为主、市场化运营为辅"为原则，菜品定价低于市场价30%左右，60岁以上老年人凭身份证可享8折优惠，70岁以上享7折，80岁以上免费；菜品设计兼顾老年人饮食需求，以低盐、低脂、软烂为主，每天提供10余种菜品选择，同时支持上门送餐服务，为行动不便的独居老人解决"做饭难"问题。以广州越秀区某社区食堂为例，每天接待老年人用餐200余人次，提供早餐、午餐、晚餐服务，早餐仅需3-5元，午餐套餐12元即可享受两荤一素一汤，食堂还定期开展"节气养生餐"活动，结合传统节气推出养生菜品。民政部表示，2024年将继续加大社区食堂建设投入，计划新增社区食堂5000个，同时引入社会资本参与运营，丰富菜品种类与服务形式，让更多老年人享受到便捷的助餐服务。',
        state: '已发布',
        pub_date: '2024-04-08 16:10:00', // 截至3月的数据，4月初发布更贴合统计周期
      },
      {
        id: 44174004, // 唯一标识：分类ID+004
        title: '二手图书循环平台上线，去年回收旧书超500万册，节约纸张3万吨',
        cate_id: 44174,
        cate_name: '社会',
        cover_img: 'https://picsum.photos/id/45/600/400',
        content:
          '国内首个全国性二手图书循环平台"书香循环"正式上线，平台通过回收、消毒、翻新、再流通的模式，推动二手图书资源循环利用，2023年全年回收旧书超500万册，相当于节约纸张3万吨，减少木材砍伐约50万棵。平台采用"线上预约回收+线下网点投递"双模式，用户可通过APP预约上门回收旧书，也可将旧书送至社区、学校设立的回收网点；回收的旧书会经过分拣、消毒（紫外线杀菌+臭氧消毒）、翻新（修复破损书页、重新装订）等流程，符合流通标准的图书会以低价在平台售卖，售价仅为新书的2-5折，部分稀缺旧书、绝版书还会标注收藏价值；不符合流通标准的图书则会被制成再生纸或用于公益捐赠，捐赠给偏远山区学校、乡村书屋等。据平台数据显示，目前已有超200万用户注册使用，回收的图书中教辅类、文学类占比最高，其中90%的二手图书通过平台再次流通，公益捐赠超30万册。平台负责人表示，未来将联合出版社推出"以旧换新"活动，鼓励更多人参与图书循环，推动绿色阅读、低碳生活理念普及。',
        state: '已发布',
        pub_date: '2024-01-18 10:30:00', // 平台上线+2023年数据，1月初发布符合年度总结节奏
      },

      // 7. 体育分类（cate_id: 45007，cate_name: 体育）
      {
        id: 45007001, // 唯一标识：分类ID+001
        title: '国足新一期集训名单公布：3名U23球员入选，备战亚洲杯预选赛',
        cate_id: 45007,
        cate_name: '体育',
        cover_img: 'https://picsum.photos/id/46/600/400',
        content:
          '中国国家男子足球队公布新一期集训名单，共有26名球员入选，其中包括3名U23球员，集训将于2024年3月20日在海南海口开启，重点备战2024年亚洲杯预选赛小组赛。此次名单延续"新老结合"的思路，老将方面，武磊、张玉宁等核心球员悉数入选，将承担进攻端重任；年轻球员中，22岁的中场球员艾菲尔丁、21岁的后卫朱辰杰、23岁的门将刘世博3名U23球员首次入选成年国家队，教练组表示，此次征召年轻球员是为了锻炼新人，为球队注入新鲜血液，同时考察其在高强度训练与比赛中的表现。集训期间，球队将重点演练防守反击战术，针对小组赛对手越南队、泰国队的技术特点制定针对性训练方案，同时邀请体能教练开展专项体能训练，提升球员耐力与爆发力。亚洲杯预选赛小组赛将于4月开启，国足与越南、泰国、新加坡分在同一小组，需争夺小组前两名才能晋级2025年亚洲杯正赛，教练组与球员均表示，将全力以赴争取胜利，为国足冲击亚洲杯好成绩奠定基础。',
        state: '已发布',
        pub_date: '2024-03-10 15:45:00', // 集训3月20日开启，3月10日公布名单符合赛前预热节奏
      },
      {
        id: 45007002, // 唯一标识：分类ID+002
        title: 'CBA季后赛：广东队3-0横扫山东队，晋级四强将战辽宁队',
        cate_id: 45007,
        cate_name: '体育',
        cover_img: 'https://picsum.photos/id/47/600/400',
        content:
          '2023-2024赛季CBA季后赛四分之一决赛落下帷幕，广东队凭借出色的整体发挥，以3-0的大比分横扫山东队，成功晋级四强，接下来将与辽宁队争夺总决赛门票。此次系列赛中，广东队核心球员易建联状态火热，场均贡献28分10篮板2盖帽的全面数据，尤其是在第三场比赛中，他在第四节关键时刻连续命中3记三分球，帮助球队锁定胜局；外援马尚·布鲁克斯则承担起组织进攻重任，场均送出8次助攻，串联起球队的攻防体系。山东队虽全力抵抗，但主力球员陶汉林因伤状态下滑，场均得分较常规赛下降8分，外线三分命中率仅为28%，最终未能突破广东队的防守。另一边，辽宁队以3-1的大比分淘汰浙江队，晋级四强，核心球员郭艾伦场均贡献25分6助攻，成为球队晋级的关键。广东队与辽宁队的半决赛将于4月15日开打，两队历史上曾多次在季后赛交手，广东队以12胜8负稍占上风，此次"辽粤大战"备受球迷关注，预计将上演多场精彩对决。',
        state: '已发布',
        pub_date: '2024-04-10 11:20:00', // 四分之一决赛落幕，4月10日发布结果，为4月15日半决赛预热
      },
      {
        id: 45007003, // 唯一标识：分类ID+003
        title: '2024年杭州马拉松报名启动，预计参赛人数突破3万人',
        cate_id: 45007,
        cate_name: '体育',
        cover_img: 'https://picsum.photos/id/48/600/400',
        content:
          '2024年杭州马拉松报名通道正式开启，赛事将于2024年11月10日鸣枪开跑，设置全程马拉松、半程马拉松、迷你马拉松（5公里）、亲子跑（2.5公里）四个项目，预计参赛人数突破3万人，其中全程马拉松名额1.2万个，半程马拉松名额1.5万个。本届杭州马拉松在赛道设计上进行优化，全程马拉松路线将途经西湖、钱塘江、大运河等杭州标志性景点，让跑者在比赛过程中感受杭州的自然与人文风光；同时新增"亲子跑"项目，面向6-12岁儿童及其家长开放，旨在推广家庭运动理念，吸引更多家庭参与马拉松运动。报名通道开启后，半程马拉松名额成为热门，仅1小时就已报满，全程马拉松名额也在6小时内售罄，报名人数较去年增长20%，其中外地跑者占比达45%，涵盖全国31个省、自治区、直辖市。赛事组委会表示，将加强赛事保障工作，在赛道沿途设置50个补给站，提供水、运动饮料、能量食品等物资，同时安排2000余名志愿者、100余辆救护车提供服务，确保赛事安全有序进行，为跑者打造良好的参赛体验。',
        state: '已发布',
        pub_date: '2024-08-15 09:30:00', // 马拉松11月举办，8月启动报名符合赛事筹备周期（提前3个月）
      },
    ])

    // -------------------------- 4. 筛选 + 分页逻辑（不变） --------------------------
    const filterParams = ref({
      cate_id: '', // 筛选的分类ID（空表示所有分类）
      state: '', // 筛选的状态（空表示所有状态）
    })

    // 关键修改：筛选逻辑直接用“分类ID”匹配，而非“分类名称”
    const filteredArticles = computed(() => {
      return articleList.value.filter((article) => {
        // 1. 分类匹配：筛选参数 cate_id 为空 → 匹配所有；否则匹配文章的 cate_id 与筛选ID
        const cateMatch =
          filterParams.value.cate_id === ''
            ? true
            : article.cate_id === Number(filterParams.value.cate_id) // 转Number避免类型不匹配

        // 2. 状态匹配：筛选参数 state 为空 → 匹配所有；否则匹配文章的 state
        const stateMatch =
          filterParams.value.state === '' ? true : article.state === filterParams.value.state

        return cateMatch && stateMatch // 同时满足分类和状态筛选
      })
    })

    const currentPage = ref(1)
    const pageSize = ref(5)
    const filteredArticleTotal = computed(() => filteredArticles.value.length)
    const currentPageArticles = computed(() => {
      const startIndex = (currentPage.value - 1) * pageSize.value
      const endIndex = startIndex + pageSize.value
      return filteredArticles.value.slice(startIndex, endIndex)
    })

    const getTotalPages = computed(() => {
      return Math.ceil(filteredArticleTotal.value / pageSize.value)
    })

    const setPageSize = (newPageSize) => {
      if (typeof newPageSize !== 'number' || newPageSize < 1) {
        console.warn('每页条数必须是大于 0 的整数！')
        return
      }
      pageSize.value = newPageSize
      currentPage.value = 1
    }

    const setCurrentPage = (newPage) => {
      const totalPages = Math.ceil(filteredArticleTotal.value / pageSize.value)
      currentPage.value = newPage < 1 ? 1 : newPage > totalPages ? totalPages : newPage
    }

    const setFilterParams = (newParams) => {
      filterParams.value = { ...filterParams.value, ...newParams }
      currentPage.value = 1
    }

    const resetFilterParams = () => {
      filterParams.value = {
        cate_id: '', // 重置为“空”：显示所有分类（原44160是默认程序员分类，需去掉）
        state: '', // 重置为“空”：显示所有状态
      }
      currentPage.value = 1 // 重置后回到第1页，确保展示全部文章的第一页
    }

    // 添加文章逻辑
    const addArticleList = (obj) => {
      // 1. 基础字段校验（保留原逻辑）
      const requiredFields = ['title', 'cate_id', 'cover_img', 'content', 'state']
      const missingFields = requiredFields.filter((field) => {
        const value = obj[field]
        return value === undefined || value === null || String(value).trim() === ''
      })
      if (missingFields.length > 0) {
        console.warn(`缺少字段：${missingFields.join(', ')}`)
        return
      }

      // 2. 分类匹配逻辑
      if (!channelList.value || channelList.value.length === 0) {
        console.warn('❌ 分类列表为空，无法匹配！')
        return
      }

      // 统一 cate_id 类型为数字
      const targetCateId = Number(obj.cate_id)
      // -------------------------- 新增日志2：看转换后的 cate_id --------------------------
      // 从分类列表匹配
      const matchedCate = channelList.value.find((item) => {
        return Number(item.id) === targetCateId // 两边都转数字，确保类型一致
      })
      if (!matchedCate) {
        console.warn(`❌ 没找到 cate_id = ${targetCateId} 的分类！`)
        return
      }
      const completeArticle = {
        ...obj,
        cate_name: matchedCate.cate_name, // 从匹配到的分类取 name
        pub_date: new Date().toISOString().replace('T', ' ').slice(0, 19),
        id: Date.now(),
      }
      articleList.value.unshift(completeArticle)
      console.log('✅ 添加成功，最终数据：', completeArticle)
    }

    // 编辑文章逻辑：传入包含 id 的更新对象，根据 id 匹配并更新文章内容
    const editArticleList = (updatedArticle) => {
      // 1. 第一步：校验传入参数的合法性（避免无 id 或空对象导致的错误）
      if (!updatedArticle || typeof updatedArticle !== 'object' || !updatedArticle.id) {
        console.warn(
          '❌ 编辑失败：传入的更新对象不合法！必须包含 "id" 字段（如 { id: 44133001, title: "新标题" }）',
        )
        return // 参数不合法，直接终止执行
      }

      // 2. 第二步：根据 id 在文章列表中找到目标文章的索引（用 findIndex 定位，方便后续更新）
      // 注意：这里假设 articleList 是你存储所有文章的响应式数组（如 const articleList = ref([])）
      const targetIndex = articleList.value.findIndex((article) => article.id === updatedArticle.id)

      // 3. 第三步：判断目标文章是否存在（index = -1 表示未找到）
      if (targetIndex === -1) {
        console.warn(`❌ 编辑失败：未找到 id = ${updatedArticle.id} 的文章，请检查 id 是否正确！`)
        return // 未找到文章，终止执行
      }

      // 4. 第四步：更新文章内容（用 Object.assign 或扩展运算符，保留原文章未被修改的字段）
      // 例如：传入 { id: 44133001, title: "新标题", state: "草稿" }，只会更新 title 和 state，其他字段不变
      articleList.value[targetIndex] = {
        ...articleList.value[targetIndex], // 保留原文章的所有字段
        ...updatedArticle, // 用传入的更新对象覆盖需要修改的字段
        pub_date: new Date().toISOString().replace('T', ' ').slice(0, 19), // 可选：编辑后自动更新发布时间
      }

      // 5. 第五步：编辑成功提示（可选，方便调试和用户反馈）
      console.log(`✅ 编辑成功！已更新 id = ${updatedArticle.id} 的文章`)
      console.log('更新后文章内容：', articleList.value[targetIndex])
    }

    // 删除文章逻辑
    const delArticleList = (id) => {
      // 1. 第一步：校验传入的id合法性（避免空值、非数字id导致的错误）
      if (!id || (typeof id !== 'number' && typeof id !== 'string')) {
        console.warn(
          '❌ 删除失败：传入的id不合法！id必须是数字或数字格式的字符串（如 44133001 或 "44133001"）',
        )
        return
      }

      // 2. 第二步：统一id类型（避免数字id和字符串id不匹配，比如 44133001 vs "44133001"）
      const targetId = typeof id === 'string' ? Number(id) : id

      // 3. 第三步：检查目标文章是否存在（避免删除不存在的文章）
      const isArticleExist = articleList.value.some((article) => article.id === targetId)
      if (!isArticleExist) {
        console.warn(`❌ 删除失败：未找到id = ${targetId} 的文章，请检查id是否正确！`)
        return
      }

      // 5. 第五步：执行删除（用filter过滤掉目标id对应的文章，生成新数组覆盖原数组）
      // 注意：Vue响应式要求数组更新需改变引用，filter会返回新数组，确保页面自动刷新
      const deletedArticle = articleList.value.find((article) => article.id === targetId)
      articleList.value = articleList.value.filter((article) => article.id !== targetId)

      // 6. 第六步：删除成功反馈（可选，方便调试和用户感知）
      console.log(`✅ 删除成功！已移除id = ${targetId} 的文章`)
      console.log('删除的文章详情：', deletedArticle)
      // 若有页面提示需求，可在这里添加弹窗/消息提示（如 ElMessage.success）
    }
    // -------------------------- 5. 暴露属性/方法（确保方法已提前定义） --------------------------
    return {
      // 基础数据
      channelList,
      articleList,
      filteredArticleTotal, // 筛选后的总条数

      // 分类操作方法（现在已提前定义，不会报“未找到”错误）
      addChannelList,
      removeChannelList,
      setChannelList,

      // 筛选相关
      filterParams,
      setFilterParams,
      resetFilterParams,

      // 分页相关
      currentPage,
      pageSize,
      currentPageArticles,
      getTotalPages,
      setPageSize,
      setCurrentPage,

      //添加文章
      addArticleList,

      // 编辑文章
      editArticleList,

      // 删除文章
      delArticleList,
    }
  },
  {
    persist: {
      storage: localStorage,
      paths: ['channelList', 'currentPage', 'pageSize', 'filterParams'],
    },
  },
)
